home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 1 (Walnut Creek)
/
Aminet - June 1993 [Walnut Creek].iso
/
aminet
/
comm
/
misc
/
xprzedzap090.lzh
/
XprZedZap.Doc
< prev
next >
Wrap
Text File
|
1992-11-25
|
6KB
|
132 lines
To start off, the xprzedzap.library is just a slightly modified
xprzmodem.library. The xprzedzap.library uses the 2.10 version of the
xprzmodem.library as its base and uses the 2.50 version for the 32bit
CRC routines. The reason the 2.50 version is not used as a base is
that it does not compile correctly under SAS/C 5.10a. After analysis
on the source code to both versions, they appear to be identical ex-
cept for the 32bit CRC routines.
It appears, that there might be a bug in the xprzmodem.library
when the ZFIN is not acknowledged by the receiver when one is sending
a file, but I believe that this is not caused by the library, and is
instead caused by the comm. program accessing the library.
The changes from zmodem to zedzap are as follows. 1) The maximum
packet size can now be set with a maximum/default at 8192. This will
vary when sending and will be static when receiving. When sending
the maximum packet size will be baud rate dependant, and the size is
calculated with the formula MAX_PACKET = (BPS_RATE * 8192 / 9600).
You can specify a limit for the maximum packet size with the M op-
tion, but it only influence the packet size if it is smaller than
MAX_PACKER or if one is receiving a file (NOTE: It should allways be
set to 8192 if one is receiving a file... But the option in there to
limit it to less). Also, the IO Buffer for reading/writing to/from
the disk must be equal to twice the maximum packet size (or the ma-
ximum packet size will automatically be decreased). 2) One can start
and end a transfer if there are no files to be sent. If this option
in used and no files are sent, then most BBS programs will report
that the upload was unsuccessful (experienced this when testing the
library).
All options must be in the following order (to be sent by one's comm.
program): T(YN?C),O(YNRS),B(num),F(num),E(num),A(YN),D(YN),K(YN),
S(YN),R(YN),C(num),N(YN),M(num),P(string)
new options:
N = Send if there are no files Def: Y
M = Set maximum packet size ((M <= 8192 )&&(B >= M * 2)) Def: 8192
C = Set Pseudo BPS Rate (if you are have you BPS rate locked, this
will make the library use this BPS rate to calculate the maxi-
mum packet size). I it is set below 300 or above 56800 then it
will be ignored. If it is left out, it will also be ignored.
This could be used in the future by Welmat if the BPS rate is
locked and a connection of 2400BPS is made with the serial port
at 19200.
-=> Please see Codes.Doc for changes to the result messages! <=-
Example: (for coorect operation on Fidonet)
TN,ON,B16,F0,E30,AN,DY,KN,SN,RN,C2400,NY,M8192,Pmail:inbound
Features:
-Send in binary mode
-Append .dup[n] to duplicate files
-File IO buffer set to 16k (should be M * 2 = 8192 * 2 = 16384 = 16k)
-Do Not Use Frames
-Allow a maximum of 30 errors to occur during transfer
-Do not download automatically
-Do not keep partial files (because of option O)
-Do not send full path
-Do not use received path
-We are using the maximum packet size that is associated with 2400BPS
(in this case 2048, so the M8192 would not really make a difference.
This should be set after connecting. If this is not specified, then
the normal BPS rate be used in the calculation of the maximum packet
size)
-Start transfer even if there are no files to be sent
-Set maximum packet size to 8192 (this might be set lower if the BPS
rate is below 9600 or if the file IO buffer is smaller than 16k. This
should be kept at 8192 at all times, but the option is there to set
it to a lower level)
-Receive all files into the directory mail:inbound/
Problems:
-If file requests are received and are not replied to in such a way
that the *.REQ file is deleted (or renamed), then the node that sent
the *.REQ file will not be able to send the file again with that
name, as it will automatically be named *.REQ.DUPn by the protocol,
or original *.REQ file will be overwritten. This is all specified
with the 'O' option ('OS' would make the *.REQ file get skipped all-
together).
-The same goes with *.OUT,*.HUT, and *.CUT files (but since these are
barely used in the first place...)
This XPR library has been tested with VLT and Welmat.
Credits:
-Chuck Frosberg for the original ZMODEM specs
-Rick Huebner for the original xprzmodem.library (--> v2.10)
-William M. Perkins for the 32bit CRC improvements (2.50)
-Yves Konigshofer for the slight changes to allow ZedZap-type transfers
Address Comments To:
Yves Konigshofer
1:109/456.0@FidoNet
(301)469-YVES
[9837]
----
Updates - Russell McOrmond
-----------------------------------------------------------------------
Bug Fixes - Yves Konighofer
20 Nov. 1992
Welmat [rwm- current beta's, not a valid concern] does not use v->Baud
so a packet size of 2400 was assumed in the
zgethdr() routine. This works just fine for 2400bps transfers, BUT at
high speeds with large 8192 byte blocks it would be almost fatal for an
error to occur that messes up the header since only the next 2400 bytes
would be checked. This has been fixed so that 8192*2 characters will be
read instead of 2400 before the "garbage count" becomes too large. This
is because we CANNOT assume that the sending will use a smaller packet
than 8192 bytes (even at only 1200bps). Also, be allowing 2*8192 bytes
to be read, we increase the likelyhood of hitting the next header if
the fist is messed up and becomes longer due to line noise (thus one
less garbage count error would be reported). Alas, both ways will re-
quire a resync to be performed.
The order of the 'case' statements in the rzfile() routine has been
changed slightly so that it will not send two Attention sequences when
a bad header is followed be a bad packet.
A few result codes for errors have been changed slightly. If you speci-
fy that an already existant file should be skipped, the procheader()
routine will report ZSKIP instead of ERROR. ZDCO has also been updated
to show that the carrier has been dropped. While none of the XPR inter-
faces that I know support a carrier check, this result has been pro-
vided. [rwm - All XPR interfaces that I know of return (-1) from
an xpr_sread() to indicate a carrier drop. I know that both TERM
and Welmat support this properly]
-----------------------------------------------------------------------